home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Internet Info 1994 March
/
Internet Info CD-ROM (Walnut Creek) (March 1994).iso
/
networking
/
osi
/
quipu
/
quipu-7-patch.1
< prev
next >
Wrap
Text File
|
1991-11-21
|
24KB
|
832 lines
Dear Camayocs,
Included below is Patch #1 for QUIPU-7.0.
The major aim of the patch is to fix DSA reliability problems.
The fixes include:
Fixes to prevent replicated EDB filling the Disk with garbage.
Protocol alignment for an obsure read operation.
Test for hypothetcial deadlock case.
Fix to correctly load 'NULL' EDB files.
Fix to 'alias' indexing problem.
A fix to the X.25 handler to allow for 'quick' connections!
Fix to close the quipu.log file periodically.
Fixes to the scheduling code to increase DSA reliability.
For DUAs we have included a fix to the Quality of Service and
T.61 string syntax handlers.
The patch should be applied to the ISODE-7.0 source tree.
You will then need to re-compile ISODE and QUIPU. To do this you
should use
cd isode-7.0
./make all all-quipu
su
./make inst-all inst-quipu
And if you installed the "little" dish binaries you should do
cd others/quipu/uips/dish
./make all
su
./make inst-all
Thanks to Paul Barker, Tim Howes, Mark Prior, Mike Roe, Thomas Lenggenhager,
George Michaelson, Oliver Wenzel, and the Giant Tortoise DSA for
helping detect and fix these bugs.
Colin
*** /tmp/RCSAa10173 Wed Oct 23 11:39:17 1991
--- tsap/tp0ts.c Wed Oct 23 10:59:06 1991
***************
*** 121,127 ****
if (t = tb -> tb_retry) {
tb -> tb_retry = NULL;
! if (async)
switch ((*tb -> tb_retryfnx) (tb, td)) {
case NOTOK:
goto out;
--- 121,127 ----
if (t = tb -> tb_retry) {
tb -> tb_retry = NULL;
! if (async && tb -> tb_retryfnx)
switch ((*tb -> tb_retryfnx) (tb, td)) {
case NOTOK:
goto out;
*** /tmp/RCSAa10173 Wed Oct 23 11:39:18 1991
--- tsap/ts2sunlink.c Wed Oct 23 10:58:40 1991
***************
*** 175,181 ****
register struct tp4pkt *t;
t = NULL;
! if (async)
switch ((*tb -> tb_retryfnx) (tb, td)) {
case NOTOK:
goto out;
--- 175,181 ----
register struct tp4pkt *t;
t = NULL;
! if (async && tb -> tb_retryfnx)
switch ((*tb -> tb_retryfnx) (tb, td)) {
case NOTOK:
goto out;
*** /tmp/RCSAa10173 Wed Oct 23 11:39:19 1991
--- tsap/ts2tcp.c Wed Oct 23 10:57:33 1991
***************
*** 189,194 ****
--- 189,196 ----
#endif
#endif
+ tb -> tb_retryfnx = NULLIFP; /* No need... */
+
return DONE;
}
*** /tmp/RCSAa10173 Wed Oct 23 11:39:19 1991
--- tsap/ts2tli.c Wed Oct 23 10:58:54 1991
***************
*** 459,465 ****
if (tb->tb_cc == -1) { /* call not yet connected */
struct TSAPaddr ta;
! if (async) {
switch ((*tb -> tb_retryfnx) (tb, td)) {
case NOTOK:
goto out;
--- 459,465 ----
if (tb->tb_cc == -1) { /* call not yet connected */
struct TSAPaddr ta;
! if (async && tb -> tb_retryfnx) {
switch ((*tb -> tb_retryfnx) (tb, td)) {
case NOTOK:
goto out;
*** /tmp/RCSAa10173 Wed Oct 23 11:39:20 1991
--- tsap/ts2x25.c Wed Oct 23 10:57:34 1991
***************
*** 146,151 ****
--- 146,153 ----
(void) XTService (tb); /* in case pktsize changed... */
LLOG (x25_log, LLOG_NOTICE,
("connection %d to %s", fd, na2str (remote)));
+
+ tb -> tb_retryfnx = NULLIFP; /* No need... */
return DONE;
}
*** /tmp/RCSAa07079 Tue Nov 19 13:13:36 1991
--- quipu/get_dsa_info.c Tue Nov 19 13:10:00 1991
***************
*** 306,313 ****
break;
case DI_TASK:
! task_dsa_info_wakeup(di);
! di_free(di);
break;
default:
--- 306,313 ----
break;
case DI_TASK:
! if ( task_dsa_info_wakeup(di) )
! di_free(di);
break;
default:
*** /tmp/RCSAa23005 Thu Nov 14 16:22:36 1991
--- quipu/ds_read.c Thu Nov 14 16:16:25 1991
***************
*** 160,172 ****
quipu_ctx, realtarget)) != NULLATTR)
goto out;
error->dse_type = DSE_ATTRIBUTEERROR;
error->ERR_ATTRIBUTE.DSE_at_name = get_copy_dn (entryptr);
error->ERR_ATTRIBUTE.DSE_at_plist.DSE_at_what =DSE_AT_NOSUCHATTRIBUTE;
! if (arg->rda_eis.eis_select != NULLATTR)
! error->ERR_ATTRIBUTE.DSE_at_plist.DSE_at_type = AttrT_cpy(arg->rda_eis.eis_select->attr_type);
! else
! error->ERR_ATTRIBUTE.DSE_at_plist.DSE_at_type = NULLAttrT;
error->ERR_ATTRIBUTE.DSE_at_plist.DSE_at_value = NULLAttrV;
error->ERR_ATTRIBUTE.DSE_at_plist.dse_at_next = DSE_AT_NOPROBLEM;
dn_free (realtarget);
--- 160,174 ----
quipu_ctx, realtarget)) != NULLATTR)
goto out;
+ if (arg->rda_eis.eis_select == NULLATTR)
+ goto out;
+
error->dse_type = DSE_ATTRIBUTEERROR;
error->ERR_ATTRIBUTE.DSE_at_name = get_copy_dn (entryptr);
error->ERR_ATTRIBUTE.DSE_at_plist.DSE_at_what =DSE_AT_NOSUCHATTRIBUTE;
! error->ERR_ATTRIBUTE.DSE_at_plist.DSE_at_type =
! AttrT_cpy(arg->rda_eis.eis_select->attr_type);
!
error->ERR_ATTRIBUTE.DSE_at_plist.DSE_at_value = NULLAttrV;
error->ERR_ATTRIBUTE.DSE_at_plist.dse_at_next = DSE_AT_NOPROBLEM;
dn_free (realtarget);
***************
*** 206,219 ****
}
if ((result->rdr_entry.ent_attr = eis_select (arg->rda_eis,entryptr, dsp ? NULLDN : binddn, quipu_ctx, realtarget)) == NULLATTR)
! if (! arg->rda_eis.eis_allattributes) {
error->dse_type = DSE_ATTRIBUTEERROR;
error->ERR_ATTRIBUTE.DSE_at_name = get_copy_dn (entryptr);
error->ERR_ATTRIBUTE.DSE_at_plist.DSE_at_what =DSE_AT_NOSUCHATTRIBUTE;
! if (arg->rda_eis.eis_select != NULLATTR)
! error->ERR_ATTRIBUTE.DSE_at_plist.DSE_at_type = AttrT_cpy(arg->rda_eis.eis_select->attr_type);
! else
! error->ERR_ATTRIBUTE.DSE_at_plist.DSE_at_type = NULLAttrT;
error->ERR_ATTRIBUTE.DSE_at_plist.DSE_at_value = NULLAttrV;
error->ERR_ATTRIBUTE.DSE_at_plist.dse_at_next = DSE_AT_NOPROBLEM;
dn_free (realtarget);
--- 208,220 ----
}
if ((result->rdr_entry.ent_attr = eis_select (arg->rda_eis,entryptr, dsp ? NULLDN : binddn, quipu_ctx, realtarget)) == NULLATTR)
! if ((! arg->rda_eis.eis_allattributes) && arg->rda_eis.eis_select) {
error->dse_type = DSE_ATTRIBUTEERROR;
error->ERR_ATTRIBUTE.DSE_at_name = get_copy_dn (entryptr);
error->ERR_ATTRIBUTE.DSE_at_plist.DSE_at_what =DSE_AT_NOSUCHATTRIBUTE;
! error->ERR_ATTRIBUTE.DSE_at_plist.DSE_at_type =
! AttrT_cpy(arg->rda_eis.eis_select->attr_type);
!
error->ERR_ATTRIBUTE.DSE_at_plist.DSE_at_value = NULLAttrV;
error->ERR_ATTRIBUTE.DSE_at_plist.dse_at_next = DSE_AT_NOPROBLEM;
dn_free (realtarget);
*** /tmp/RCSAa11110 Thu Oct 17 14:15:48 1991
--- quipu/shadow.c Thu Oct 17 13:51:18 1991
***************
*** 58,64 ****
extern AttributeType at_xref;
extern AttributeType at_nssr;
extern AttributeType at_objectclass;
- extern Attr_Sequence cpy_as_comp();
extern short syntax_dn;
typedef struct _atlist {
--- 58,63 ----
***************
*** 357,363 ****
"external reference missing"));
return;
}
! new_as = as_merge (new_as, cpy_as_comp (as));
if ((as = as_find_type (new_as, at_objectclass)) == NULLATTR) {
LLOG (log_dsap, LLOG_EXCEPTIONS, (
--- 356,362 ----
"external reference missing"));
return;
}
! new_as = as_merge (new_as, as_comp_cpy (as));
if ((as = as_find_type (new_as, at_objectclass)) == NULLATTR) {
LLOG (log_dsap, LLOG_EXCEPTIONS, (
*** /tmp/RCSAa02760 Mon Oct 14 12:47:21 1991
--- dsap/common/qos.c Mon Oct 14 12:46:55 1991
***************
*** 354,362 ****
}
attrQoS_print (ps, p -> dit_quality, format);
}
! if (a -> dit_description)
! ps_printf (ps, format == READOUT ? "\n%*s(%s)" : " # %s",
! a -> dit_description, qos_indent, "");
}
static struct attrQoS *str2attrQoS (str)
--- 359,371 ----
}
attrQoS_print (ps, p -> dit_quality, format);
}
! if (a -> dit_description) {
! if (format == READOUT)
! ps_printf (ps, "\n%*s(%s)", qos_indent,
! a -> dit_description);
! else
! ps_printf (ps, " # %s", a -> dit_description);
! }
}
static struct attrQoS *str2attrQoS (str)
*** /tmp/RCSAa24516 Thu Nov 7 10:35:20 1991
--- dsap/common/string.c Thu Nov 7 10:34:55 1991
***************
*** 88,101 ****
0xe5, '?', '?', '?', '?', '?', '?', '?', '?',
/* Diaresis upper case */
! 0xc4, '?', 0xc9, 0xcd, '?', 0xd3, 0xda, 0x82,
/* Diaresis lower case */
! 0xe4, '?', 0xe9, 0xed, '?', 0xf3, 0xfa, 0xff, '"',
/* Umlaut upper case */
! 0xc4, '?', 0xc9, 0xcd, '?', 0xd3, 0xda, 0x82,
/* Umlaut lower case */
! 0xe4, '?', 0xe9, 0xed, '?', 0xf3, 0xfa, 0xff, '"',
/* Ring upper case */
0xc5, '?', '?', '?', '?', '?', '?', '?',
--- 94,107 ----
0xe5, '?', '?', '?', '?', '?', '?', '?', '?',
/* Diaresis upper case */
! 0xc4, '?', 0xcb, 0xcf, '?', 0xd6, 0xdc, 0x82,
/* Diaresis lower case */
! 0xe4, '?', 0xeb, 0xef, '?', 0xf6, 0xfc, 0xff, '"',
/* Umlaut upper case */
! 0xc4, '?', 0xcb, 0xcf, '?', 0xd6, 0xdc, 0x82,
/* Umlaut lower case */
! 0xe4, '?', 0xeb, 0xef, '?', 0xf6, 0xfc, 0xff, '"',
/* Ring upper case */
0xc5, '?', '?', '?', '?', '?', '?', '?',
***************
*** 113,121 ****
'?', '?', '?', '?', '?', '?', '?', '?', '_',
/* Umlaut upper case */
! 0xc4, '?', 0xc9, 0xcd, '?', 0xd3, 0xda, 0x82,
/* Umlaut lower case */
! 0xe4, '?', 0xe9, 0xed, '?', 0xf3, 0xfa, 0xff, '"',
/* Cedilla? upper case */
'?', 0xc7, '?', '?', '?', '?', '?', '?',
--- 119,127 ----
'?', '?', '?', '?', '?', '?', '?', '?', '_',
/* Umlaut upper case */
! 0xc4, '?', 0xcb, 0xcf, '?', 0xd6, 0xdc, 0x82,
/* Umlaut lower case */
! 0xe4, '?', 0xeb, 0xef, '?', 0xf6, 0xfc, 0xff, '"',
/* Cedilla? upper case */
'?', 0xc7, '?', '?', '?', '?', '?', '?',
*** /tmp/RCSAa23601 Thu Aug 22 13:09:42 1991
--- quipu/conn_retry.c Thu Aug 22 13:06:38 1991
***************
*** 41,46 ****
--- 41,48 ----
struct connection * conn_alloc();
+ static test_deadlock();
+
/*
* Deal with an incoming acceptance of association establishment.
* Return value says whether anything has happened or not.
***************
*** 123,129 ****
/* See if there is another DSA to try... */
if ((on->on_state != ON_ABANDONED) && (on->on_dsas != NULL_DI_BLOCK)) {
LLOG (log_dsap,LLOG_NOTICE,("Trying a different DSA (NOTOK)..."));
! if (oper_chain (on) == OK) {
if (ont == NULLOPER)
conn->cn_operlist = onext;
else
--- 125,132 ----
/* See if there is another DSA to try... */
if ((on->on_state != ON_ABANDONED) && (on->on_dsas != NULL_DI_BLOCK)) {
LLOG (log_dsap,LLOG_NOTICE,("Trying a different DSA (NOTOK)..."));
! if ((test_deadlock(on) == OK) &&
! (oper_chain (on) == OK)) {
if (ont == NULLOPER)
conn->cn_operlist = onext;
else
***************
*** 137,143 ****
}
conn_extract(conn);
break;
!
case DONE :
DLOG (log_dsap,LLOG_NOTICE,( "D-BIND.RETRY DONE (%d)",conn->cn_ad));
if( (conn->cn_ad == NOTOK) || (conn_req_aux(conn) != OK))
--- 140,146 ----
}
conn_extract(conn);
break;
!
case DONE :
DLOG (log_dsap,LLOG_NOTICE,( "D-BIND.RETRY DONE (%d)",conn->cn_ad));
if( (conn->cn_ad == NOTOK) || (conn_req_aux(conn) != OK))
***************
*** 153,159 ****
/* See if there is another DSA to try... */
if ((on->on_state != ON_ABANDONED) && (on->on_dsas != NULL_DI_BLOCK)) {
LLOG (log_dsap,LLOG_NOTICE,("Trying a different DSA (DONE)..."));
! if (oper_chain (on) == OK) {
if (ont == NULLOPER)
conn->cn_operlist = onext;
else
--- 156,163 ----
/* See if there is another DSA to try... */
if ((on->on_state != ON_ABANDONED) && (on->on_dsas != NULL_DI_BLOCK)) {
LLOG (log_dsap,LLOG_NOTICE,("Trying a different DSA (DONE)..."));
! if ((test_deadlock(on) == OK) &&
! (oper_chain (on) == OK)) {
if (ont == NULLOPER)
conn->cn_operlist = onext;
else
***************
*** 195,198 ****
--- 199,241 ----
if (pstate != conn->cn_state)
conn->cn_last_used = timenow;
+ }
+
+
+ static test_deadlock (on)
+ struct oper_act * on;
+ {
+ struct di_block * di;
+ register int ndi = 0;
+
+ for (di= on -> on_dsas; di!= NULL_DI_BLOCK; di= di -> di_next)
+ ndi++;
+
+ /* To proceed, we need to contact on_dsas. */
+ /* Check they do not rely on the conn that has just failed */
+ /* Possibly a better way of testing this... */
+
+ for (di= on -> on_dsas; di!= NULL_DI_BLOCK; di= di -> di_next)
+ if (( di-> di_state == DI_DEFERRED ) &&
+ ( di-> di_perform ) &&
+ ( di-> di_perform-> on_conn ))
+ switch (di-> di_perform-> on_conn-> cn_state) {
+ case 0:
+ case CN_FAILED:
+ ndi--;
+ }
+
+ if (ndi != 0)
+ return OK;
+
+
+ if (on -> on_task) {
+ on -> on_task -> tk_resp.di_error.de_err.dse_type =
+ DSE_SERVICEERROR;
+ on -> on_task ->
+ tk_resp.di_error.de_err.ERR_SERVICE.DSE_sv_problem =
+ DSE_SV_UNABLETOPROCEED;
+ }
+
+ return NOTOK;
}
*** /tmp/RCSAa23601 Thu Aug 22 13:09:42 1991
--- quipu/get_dsa_info.c Thu Aug 22 11:10:31 1991
***************
*** 61,66 ****
--- 61,67 ----
struct di_block * di_lookup;
struct oper_act * on = NULLOPER;
int res;
+ Entry te = NULLENTRY;
DLOG (log_dsap,LLOG_TRACE,("get_dsa_info()"));
***************
*** 115,132 ****
}
}
! if ((res = really_find_entry(dn, TRUE, dn_stack, FALSE, &((*di_p)->di_entry), err, &(di_lookup))) == DS_OK)
/* is it really OK ??? */
! if (((*di_p)->di_entry ->e_data == E_TYPE_CONSTRUCTOR)
! || ((*di_p)->di_entry->e_dsainfo == NULL)
! || ((*di_p)->di_entry->e_dsainfo->dsa_addr == NULLPA)) {
DN dn_found;
DLOG(log_dsap, LLOG_NOTICE, ("rfe returned a constructor"));
! dn_found = get_copy_dn((*di_p)->di_entry);
! res = constructor_dsa_info(dn_found,dn_stack,FALSE,(*di_p)->di_entry,err,&(di_lookup));
dn_free (dn_found);
! } else
(*di_p)->di_entry->e_refcount++;
switch (res)
{
--- 116,137 ----
}
}
! if ((res = really_find_entry(dn, TRUE, dn_stack, FALSE, &te,
! err, &(di_lookup))) == DS_OK)
/* is it really OK ??? */
! if ((te->e_data == E_TYPE_CONSTRUCTOR)
! || (te->e_dsainfo == NULL)
! || (te->e_dsainfo->dsa_addr == NULLPA)) {
DN dn_found;
DLOG(log_dsap, LLOG_NOTICE, ("rfe returned a constructor"));
! dn_found = get_copy_dn(te);
! res = constructor_dsa_info(dn_found, dn_stack, FALSE, te,
! err, &(di_lookup));
dn_free (dn_found);
! } else {
! (*di_p)->di_entry = te;
(*di_p)->di_entry->e_refcount++;
+ }
switch (res)
{
*** /tmp/RCSAa23601 Thu Aug 22 13:09:42 1991
--- quipu/di_block.c Thu Aug 22 09:19:15 1991
***************
*** 49,54 ****
--- 49,59 ----
struct di_block *di;
{
DLOG(log_dsap, LLOG_TRACE, ("di_free()"));
+
+ if (di->di_state == -1) {
+ LLOG (log_dsap,LLOG_EXCEPTIONS, ("duplicate di_free"));
+ return;
+ }
switch (di->di_type) {
case DI_GLOBAL: break;
*** /tmp/RCSAa16265 Wed Aug 21 15:59:06 1991
--- quipu/entry_load.c Wed Aug 21 15:37:27 1991
***************
*** 362,370 ****
if (file_check(offset, e) == OK) {
if ((e->e_children = getentry_block(e, filename)) == NULLAVL) {
if (e->e_allchildrenpresent != FALSE &&
e->e_leaf == FALSE) {
- e->e_allchildrenpresent = FALSE;
got_all = FALSE;
return(OK);
} else
--- 362,372 ----
if (file_check(offset, e) == OK) {
if ((e->e_children = getentry_block(e, filename)) == NULLAVL) {
+ if (parse_status != 0)
+ return(NOTOK);
+
if (e->e_allchildrenpresent != FALSE &&
e->e_leaf == FALSE) {
got_all = FALSE;
return(OK);
} else
*** dsap/common/_turbo_index.c Tue Aug 13 13:06:57 1991
--- dsap/common/turbo_index.c Tue Aug 13 13:07:27 1991
***************
*** 472,477 ****
--- 472,478 ----
for ( j = i + 1; pindex->i_nonlocalaliases[ j ]; j++ )
pindex->i_nonlocalaliases[ j - 1 ] =
pindex->i_nonlocalaliases[ j ];
+ pindex->i_nonlocalaliases[ j - 1 ] = NULLENTRY;
return;
}
*** dsap/common/_attribute.c Mon Aug 12 19:11:30 1991
--- dsap/common/attribute.c Mon Aug 12 19:11:54 1991
***************
*** 199,204 ****
--- 199,206 ----
if (acl->ac_default == NULLACL_INFO)
acl->ac_default = acl_default ();
}
+ } else {
+ eptr->e_acl = NULLACL;
}
if (as = entry_find_type (eptr,at_edbinfo)) {
*** dsap/common/attribute.c~ Wed Jul 17 12:25:03 1991
--- dsap/common/attribute.c Mon Aug 12 15:35:30 1991
***************
*** 368,373 ****
--- 371,377 ----
|| (AttrT_cmp (as->attr_type,at_alias) == 0)
|| (AttrT_cmp (as->attr_type,at_inherit) == 0)) {
LLOG(log_dsap,LLOG_EXCEPTIONS,("Inherited system attribute only allowed in default case"));
+ error->dse_type = DSE_ATTRIBUTEERROR;
error->ERR_ATTRIBUTE.DSE_at_name = get_copy_dn (eptr);
error->ERR_ATTRIBUTE.DSE_at_plist.DSE_at_what =DSE_AT_CONSTRAINTVIOLATION;
error->ERR_ATTRIBUTE.DSE_at_plist.DSE_at_type = AttrT_cpy (as->attr_type);
***************
*** 379,384 ****
--- 383,389 ----
if (as->attr_value == NULLAV) {
if ((nas = entry_find_type (eptr,as->attr_type)) == NULLATTR) {
LLOG(log_dsap,LLOG_EXCEPTIONS,("Value missing for always inherited attribute type"));
+ error->dse_type = DSE_ATTRIBUTEERROR;
error->ERR_ATTRIBUTE.DSE_at_name = get_copy_dn (eptr);
error->ERR_ATTRIBUTE.DSE_at_plist.DSE_at_what =DSE_AT_NOSUCHATTRIBUTE;
error->ERR_ATTRIBUTE.DSE_at_plist.DSE_at_type = AttrT_cpy (as->attr_type);
***************
*** 394,399 ****
--- 399,405 ----
if (as->attr_value == NULLAV) {
if ((nas = entry_find_type (eptr,as->attr_type)) == NULLATTR) {
LLOG(log_dsap,LLOG_EXCEPTIONS,("Value missing for default inherited attribute type"));
+ error->dse_type = DSE_ATTRIBUTEERROR;
error->ERR_ATTRIBUTE.DSE_at_name = get_copy_dn (eptr);
error->ERR_ATTRIBUTE.DSE_at_plist.DSE_at_what =DSE_AT_NOSUCHATTRIBUTE;
error->ERR_ATTRIBUTE.DSE_at_plist.DSE_at_type = AttrT_cpy (as->attr_type);
*** /tmp/RCSAa27974 Thu Nov 21 13:36:17 1991
--- dsap/x500as/af.py Thu Nov 21 13:35:40 1991
***************
*** 88,93 ****
--- 88,99 ----
ANY [[a asn]]
OPTIONAL
}
+ %D{
+ if ((*parm)->asn == NULLPE)
+ (*parm)->p_type = ALG_PARM_ABSENT;
+ else
+ (*parm)->p_type = ALG_PARM_UNKNOWN;
+ %}
SubjectPublicKeyInfo [[P struct key_info *]]
::=
*** dsap/common/_cpair.c Wed Jul 17 12:25:16 1991
--- dsap/common/cpair.c Tue Sep 17 14:41:19 1991
***************
*** 92,98 ****
str = ptr;
if ((str != NULLCP) && (index(str, '#') != NULLCP))
{
! result->cert = str2cert(str);
if (result->cert == (struct certificate *) 0)
{
free((char *) result);
--- 92,98 ----
str = ptr;
if ((str != NULLCP) && (index(str, '#') != NULLCP))
{
! result->reverse = str2cert(str);
if (result->cert == (struct certificate *) 0)
{
free((char *) result);
*** /tmp/RCSAa23032 Thu Nov 21 09:06:53 1991
--- quipu/task_select.c Thu Nov 21 09:06:27 1991
***************
*** 40,45 ****
--- 40,54 ----
time_t lastedb_update;
struct oper_act * pending_ops = NULLOPER;
+ #ifndef NO_STATS
+
+ extern LLog * log_stat;
+ static time_t last_log_close = (time_t)0;
+ #define LOGOPENTIME 60*60 /* Close once every 60 minutes */
+
+ #endif
+
+
struct task_act * task_select(secs_p)
int * secs_p;
{
***************
*** 437,442 ****
--- 446,462 ----
(*secs_p) = 0; /* let connection be re-used */
}
}
+
+ #ifndef NO_STATS
+ if ( (timenow - last_log_close) >= LOGOPENTIME ) {
+ ll_close (log_stat);
+ last_log_close = timenow;
+ } else {
+ if ( (ret_tk == NULLTASK) && (*secs_p >= LOGOPENTIME))
+ *secs_p = LOGOPENTIME; /* Wake to close log! */
+ }
+ #endif
+
return(ret_tk);
}
*** /tmp/RCSAa23069 Thu Nov 21 09:16:46 1991
--- dsap/common/entry.c Thu Nov 21 09:15:01 1991
***************
*** 36,41 ****
--- 36,46 ----
AttributeType at_alias;
AttributeType at_objectclass;
+ extern int local_master_size;
+ extern int local_slave_size;
+ extern int local_cache_size;
+
+
directory_free (directory)
Entry directory;
{
***************
*** 47,52 ****
--- 52,67 ----
if (directory->e_children != NULLAVL)
(void) avl_free(directory->e_children, directory_free);
+
+ switch (directory->e_data) {
+ case E_TYPE_SLAVE:
+ local_slave_size--; break;
+ case E_DATA_MASTER:
+ local_master_size--; break;
+ case E_TYPE_CACHE_FROM_MASTER:
+ local_cache_size--; break;
+ }
+
entry_free(directory);
}
}
*** /tmp/RCSAa28299 Thu Nov 21 15:45:25 1991
--- quipu/dsa_chain.c Thu Nov 21 15:43:54 1991
***************
*** 995,1002 ****
*/
sort_dsa_list (&di);
! if (tk == NULLTASK)
! return; /* already done it ! */
if(di2cref(di, &(tk->tk_resp.di_error.de_err), tk->tk_conn->cn_ctx) != OK)
{
--- 995,1006 ----
*/
sort_dsa_list (&di);
! if (tk == NULLTASK) {
! if (di->di_oper == NULLOPER)
! return FALSE;
! else
! return TRUE;
! }
if(di2cref(di, &(tk->tk_resp.di_error.de_err), tk->tk_conn->cn_ctx) != OK)
{
***************
*** 1010,1023 ****
task_conn_extract(tk);
task_error(tk);
task_extract(tk);
! return;
}
! return;
}
task_conn_extract(tk);
task_error(tk);
task_extract(tk);
}
static struct access_point * di2ap (di)
--- 1014,1029 ----
task_conn_extract(tk);
task_error(tk);
task_extract(tk);
! return TRUE;
}
! return TRUE;
}
task_conn_extract(tk);
task_error(tk);
task_extract(tk);
+
+ return TRUE;
}
static struct access_point * di2ap (di)
*** /tmp/RCSAa01769 Fri Nov 22 09:37:56 1991
--- others/quipu/uips/dish/Makefile Fri Nov 22 09:35:04 1991
***************
*** 154,162 ****
-@ls -gls $@
-@echo ""
xquipurc: quipurc.o $(LIBES)
$(LDCC) $(LDFLAGS) -o $@ quipurc.o \
! $(LIBDSAP) $(LIBISODE) $(LSOCKET) $(LIBGDBM)
l-quipurc:; $(LINT) $(LFLAGS) quipurc.c $(LLIBS) \
| grep -v "warning: possible pointer alignment problem"
--- 154,165 ----
-@ls -gls $@
-@echo ""
+ # Don't use shared libs for xquipurc.
+
xquipurc: quipurc.o $(LIBES)
$(LDCC) $(LDFLAGS) -o $@ quipurc.o \
! $(TOPDIR)libdsap.a $(TOPDIR)libisode.a \
! $(LSOCKET) $(LIBGDBM)
l-quipurc:; $(LINT) $(LFLAGS) quipurc.c $(LLIBS) \
| grep -v "warning: possible pointer alignment problem"
*** /tmp/RCSAa23166 Thu Nov 21 09:36:21 1991
--- dsap/oidtable.oc Fri Aug 23 08:40:19 1991
***************
*** 156,164 ****
pilotDSA: pilotObjectClass.21 : dsa : dSAQuality :
! qualityLabelledData: pilotObjectClass.22 : top : dSAQuality : \
subtreeMinimumQuality, subtreeMaximumQuality
# QUIPU defined object classes
quipuDSA: quipuObjectClass.1 : dSA : \
--- 162,174 ----
pilotDSA: pilotObjectClass.21 : dsa : dSAQuality :
! # Retired - wrong mandatory attribute
! oldQualityLabelledData: pilotObjectClass.22 : top : dSAQuality : \
subtreeMinimumQuality, subtreeMaximumQuality
+ qualityLabelledData: pilotObjectClass.23 : top : singleLevelQuality : \
+ subtreeMinimumQuality, subtreeMaximumQuality
+
# QUIPU defined object classes
quipuDSA: quipuObjectClass.1 : dSA : \
*** /tmp/patchlevel Thu Nov 21 15:56:54 1991
--- quipu/patchlevel Thu Nov 21 15:56:12 1991
***************
*** 0 ****
--- 1,1 ----
+ 1:Thu Nov 21 15:56:12 GMT 1991